home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 August / August CD.bin / Shareware / Education / numericalmethods Folder / chap_11 / house2.m < prev    next >
Encoding:
Text File  |  1994-06-05  |  697 b   |  27 lines  |  [MATF/MATL]

  1. function A = house2(A,show)
  2. % A = house2(A,show)
  3. % To reduce a symmetric matrix to tridigonal form.
  4. % Householder`s method is employed.
  5. % A is an n x n symmetric matrix, input.
  6. % A is the tridiagonal matrix, output.
  7. if nargin==1, show = 0; end
  8. [n,n] = size(A);
  9. for k = 2:n-1
  10.   U = A(:,k-1);
  11.   U(1:k-1) = zeros(k-1,1);
  12.   U = U/norm(U);
  13.   if U(k) < 0, U = -U; end
  14.   U(k) = U(k) + 1;
  15.   beta = -U(k);       % beta is  -(norm(U)^2)/2
  16.   V = A*U/beta;
  17.   gamma = V'*U/(2*beta);
  18.   V = V + gamma*U;
  19.   A  =  A + U*V' + V*U';
  20.   A(k-1,k+1:n) = zeros(1,n-k);
  21.   if show==1,
  22.     home, clc
  23.     disp(''),disp(['Householder similarity transformation No. ',...
  24.     int2str(k-1)]),disp(''),disp(A),pause(1);
  25.   end
  26. end
  27.